home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ccccoooonnnnssssttttaaaannnntttt((((3333)))) ccccoooonnnnssssttttaaaannnntttt((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- constant - Perl pragma to declare constants
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use constant BUFFER_SIZE => 4096;
- use constant ONE_YEAR => 365.2425 * 24 * 60 * 60;
- use constant PI => 4 * atan2 1, 1;
- use constant DEBUGGING => 0;
- use constant ORACLE => 'oracle@cs.indiana.edu';
- use constant USERNAME => scalar getpwuid($<);
- use constant USERINFO => getpwuid($<);
-
- sub deg2rad { PI * $_[0] / 180 }
-
- print "This line does nothing" unless DEBUGGING;
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- This will declare a symbol to be a constant with the given scalar or list
- value.
-
- When you declare a constant such as PI using the method shown above, each
- machine your script runs upon can have as many digits of accuracy as it
- can use. Also, your program will be easier to read, more likely to be
- maintained (and maintained correctly), and far less likely to send a
- space probe to the wrong planet because nobody noticed the one equation
- in which you wrote 3.14195.
-
- NNNNOOOOTTTTEEEESSSS
- The value or values are evaluated in a list context. You may override
- this with scalar as shown above.
-
- These constants do not directly interpolate into double-quotish strings,
- although you may do so indirectly. (See the _p_e_r_l_r_e_f manpage for details
- about how this works.)
-
- print "The value of PI is @{[ PI ]}.\n";
-
- List constants are returned as lists, not as arrays.
-
- $homedir = USERINFO[7]; # WRONG
- $homedir = (USERINFO)[7]; # Right
-
- The use of all caps for constant names is merely a convention, although
- it is recommended in order to make constants stand out and to help avoid
- collisions with other barewords, keywords, and subroutine names. Constant
- names must begin with a letter.
-
- Constant symbols are package scoped (rather than block scoped, as use
- strict is). That is, you can refer to a constant from package Other as
- Other::CONST.
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- ccccoooonnnnssssttttaaaannnntttt((((3333)))) ccccoooonnnnssssttttaaaannnntttt((((3333))))
-
-
-
- As with all use directives, defining a constant happens at compile time.
- Thus, it's probably not correct to put a constant declaration inside of a
- conditional statement (like if ($foo) { use constant ... }).
-
- Omitting the value for a symbol gives it the value of undef in a scalar
- context or the empty list, (), in a list context. This isn't so nice as
- it may sound, though, because in this case you must either quote the
- symbol name, or use a big arrow, (=>), with nothing to point to. It is
- probably best to declare these explicitly.
-
- use constant UNICORNS => ();
- use constant LOGFILE => undef;
-
- The result from evaluating a list constant in a scalar context is not
- documented, and is nnnnooootttt guaranteed to be any particular value in the
- future. In particular, you should not rely upon it being the number of
- elements in the list, especially since it is not nnnneeeecccceeeessssssssaaaarrrriiiillllyyyy that value
- in the current implementation.
-
- Magical values, tied values, and references can be made into constants at
- compile time, allowing for way cool stuff like this. (These error
- numbers aren't totally portable, alas.)
-
- use constant E2BIG => ($! = 7);
- print E2BIG, "\n"; # something like "Arg list too long"
- print 0+E2BIG, "\n"; # "7"
-
-
- TTTTEEEECCCCHHHHNNNNIIIICCCCAAAALLLL NNNNOOOOTTTTEEEE
- In the current implementation, scalar constants are actually inlinable
- subroutines. As of version 5.004 of Perl, the appropriate scalar constant
- is inserted directly in place of some subroutine calls, thereby saving
- the overhead of a subroutine call. See the section on _C_o_n_s_t_a_n_t _F_u_n_c_t_i_o_n_s
- in the _p_e_r_l_s_u_b manpage for details about how and when this happens.
-
- BBBBUUUUGGGGSSSS
- In the current version of Perl, list constants are not inlined and some
- symbols may be redefined without generating a warning.
-
- It is not possible to have a subroutine or keyword with the same name as
- a constant. This is probably a Good Thing.
-
- Unlike constants in some languages, these cannot be overridden on the
- command line or via environment variables.
-
- AAAAUUUUTTTTHHHHOOOORRRR
- Tom Phoenix, <_r_o_o_t_b_e_e_r@_t_e_l_e_p_o_r_t._c_o_m>, with help from many other folks.
-
- CCCCOOOOPPPPYYYYRRRRIIIIGGGGHHHHTTTT
- Copyright (C) 1997, Tom Phoenix
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- ccccoooonnnnssssttttaaaannnntttt((((3333)))) ccccoooonnnnssssttttaaaannnntttt((((3333))))
-
-
-
- This module is free software; you can redistribute it or modify it under
- the same terms as Perl itself.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-